From: Vincenzo Pupillo Date: Wed, 22 Jan 2025 15:14:41 +0000 (+0100) Subject: Constant highlighting no longer captures Java annotations X-Git-Tag: archive/raspbian/1%30.2+1-2+rpi1^2~2^2~24^2~277 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=563b6f94511b76266984bc6764ec2a9391448138;p=emacs.git Constant highlighting no longer captures Java annotations * lisp/progmodes/java-ts-mode.el (java-ts-mode--fontify-constant): New function. (java-ts-mode--font-lock-settings): Use it. --- diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index 6823cb4f38a..849ab23ef3e 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -164,6 +164,23 @@ the available version of Tree-sitter for Java." (error `((string_literal) @font-lock-string-face)))) +(defun java-ts-mode--fontify-constant (node override start end &rest _) + "Fontify a Java constant. +In Java the names of variables declared class constants and of ANSI +constants should be all uppercase with words separated by underscores. +This function also prevents annotations from being highlighted as if +they were constants. +For NODE, OVERRIDE, START, and END, see `treesit-font-lock-rules'." + (let ((node-start (treesit-node-start node)) + (case-fold-search nil)) + (when (and + (not (equal (char-before node-start) ?@)) ;; skip annotations + (string-match "\\`[A-Z_][0-9A-Z_]*\\'" (treesit-node-text node))) + (treesit-fontify-with-override + node-start (treesit-node-end node) + 'font-lock-constant-face override + start end)))) + (defvar java-ts-mode--font-lock-settings (treesit-font-lock-rules :language 'java @@ -174,8 +191,7 @@ the available version of Tree-sitter for Java." :language 'java :override t :feature 'constant - `(((identifier) @font-lock-constant-face - (:match "\\`[A-Z_][0-9A-Z_]*\\'" @font-lock-constant-face)) + `((identifier) @java-ts-mode--fontify-constant [(true) (false)] @font-lock-constant-face) :language 'java :override t